package org.hbnu.webregisterlogin.mapper;

import org.apache.ibatis.annotations.*;
import org.apache.ibatis.mapping.StatementType;
import org.apache.ibatis.type.JdbcType;
import org.hbnu.webregisterlogin.entity.Users;
import org.springframework.stereotype.Repository;

//用户查询实体类
@Mapper
@Repository
public interface UsersMapper {

    /**
     * 按邮箱查找用户（登录）
     *
     * @param email 用户邮箱
     * @return 用户实体
     */
    @Select("SELECT id, email, password, nickname, age, sex, phone, address FROM users WHERE email = #{email}")
    Users findByEmail(@Param("email") String email);

    /**
     * 增加用户（注册）
     *
     * @param users 用户实体
     */
    @Insert("INSERT INTO users (email, password, nickname, age, sex, phone, address) " +
            "VALUES (#{email}, #{password}, #{nickname}, #{age}, #{sex}, #{phone}, #{address})")
    @Options(useGeneratedKeys = true, keyProperty = "id") // 如果id是自增的，可以自动获取生成的id
    void add(Users users);

    /**
     * 删除用户（注销用户）
     *
     * @param id 用户编号
     */
    @Delete("DELETE FROM users WHERE id = #{id}")
    void delete(@Param("id") int id);

    /**
     * 修改用户信息（编辑个人信息）
     *
     * @param users 用户实体
     */
    @Update("UPDATE users SET email = #{email}, password = #{password}, nickname = #{nickname}, " +
            "age = #{age}, sex = #{sex}, phone = #{phone}, address = #{address} WHERE id = #{id}")
    void update(Users users);

}